1. Field of the Invention
The present invention relates generally to web-enabled applications, and in particular, to a method, apparatus, and article of manufacture for executing applications in a network environment while providing a full complement of features and precision of a stand-alone application.
2. Description of the Related Art
Web-based applications are often executed on thin-client devices such as mobile telephones, personal digital assistants (PDAs), computers with limited processing capabilities, etc. However, it is desirable to build web applications that are progressively full featured and interactive while presenting results that involve precision and processing capabilities that have been traditionally relegated to stand-alone systems. Prior art systems fail to provide such web-based applications. To better understand such problems, it is useful to describe prior art web applications and their limitations.
There are two general approaches to building web applications in the prior art. In the first approach, a native web application is built using current technology (e.g., HTML [hyptertext markup language], Flash™, third party development tools, etc.). Most such web applications take advantage of a server that executes the application and performs the majority of the processing. The client computer is used to transmit commands via a user interface to the server.
In the second approach, a traditional desktop application is created and the developer determines where the application processing should be split. For example, the developer may determine that the graphics/user interface elements are processed on the client desktop window while other processing is performed by the server. Such a developer would further develop a protocol for sending command/bits/events back to the server that processes and transmits the appropriate information back to the client.
In view of the different approaches, one may see that an application can be built entirely on the browser/client that is not as precise/accurate. In other words, such an application may execute quickly but may not have the full processing capabilities of a server and hence may not provide the results desired. Thus, there is a tradeoff in the prior art between speed and accuracy.
Viewed another way, in the prior art, interactive applications are often built with a single behavioral and semantic stack. For example, user input may be accumulated, processed by various modules, executed on existing data to produce more data, followed by the updating of one or more views on the client browser. Almost always, one instance of any particular class of module (e.g., visual editing kernel, numerical solver, etc.) is used. Such prior art implementations tend to only have the capacity to scale, in terms of the manipulate-compute-display response profile, as a function of computation resources upon which the application runs/executes. In other words, as the resources increase with respect to memory, processing cores, faster processors, etc., better performance may be achieved.
The corollary to this statement is that by “reducing data” to those algorithms that are sensitive to it, performance can be increased as well. For example, if coarser meshes are used for analysis, less triangles and effects result for the display, and larger error tolerances for solvers may result.
Such conditions may be exacerbated when moving these application architectures to client/server and other distributed models. Further, when the client-side environment is in some way more constrained (i.e., less computations result in less capabilities), decisions must be made with respect to the interactive experience/performance versus fidelity and accuracy of the data.
In view of the above, it is desirable to provide an application architecture that enables new mechanisms for scalability and the means to improve interactivity with less compromise on the fidelity of the data. It is further desirable to enable the development and delivery of real interactive three dimensional (3D) editing and design applications on the web and mobile devices.